Automatic Computer Program Customization Based On A User Information Store

ABSTRACT

Software programs, such as an operating system or other application programs, are automatically customized to a specific user(s) based on data corresponding to the specific user(s) that is maintained in a user information store. In one embodiment, the information store is a unified store that is accessible by multiple programs including the operating system. Thus, new information or information changes can be made available to multiple programs by the user adding (or changing) the information only once. In another embodiment, the operating system image to be installed on a computer is pre-populated with user-specific information at the factory. The user-specific information can be integrated into the operating system at the factory or alternatively upon an initial boot of the computer by the user.

RELATED APPLICATIONS

This application is a continuation of and claims priority to U.S. patentapplication Ser. No. 10/961,800, filed Oct. 8, 2004, which is acontinuation of and claims priority to U.S. patent application Ser. No.09/560,676, filed Apr. 27, 2000, now issued U.S. Pat. No. 6,823,508 thedisclosure of U.S. patent application Ser. No. 10/961,800, filed Oct. 8,2004 incorporating U.S. patent application Ser. No. 09/560,676, filedApr. 27, 2000 by reference is hereby incorporated by reference herein.

TECHNICAL FIELD

This invention relates to installing programs on computers, and moreparticularly to automatically customizing a program based on a userinformation store.

BACKGROUND OF THE INVENTION

Conventional computers generally execute one or more software programs,such as operating systems, productivity applications, educationalapplications, recreational applications, etc. Before such a softwareprogram can be executed by the computer, it typically must be installedon the computer, a process which usually involves copying one or morefiles from a distribution medium (e.g., a CD ROM) onto a storage device(e.g., a hard disk) of the computer, as well as possibly informing theoperating system of the newly installed program.

A current trend in computer development and design is towards anincrease in user-friendliness. Making software, and thus the computersthat run the software, easier to use increases the number of people thatwill actually use the computers and software. Furthermore, by improvingthe user-friendliness of a computer or the installed software theoverall user experience in using that computer or software cancorrespondingly be improved.

One way in which user-friendliness is improved, for both software andthe computer as a whole, is allowing for user-customization of thesoftware. For example, the user's name, street address, electronic mailaddress, display preferences, etc. can be provided to the software. Thisallows the software to address the user at a personal level (e.g., byname) and operate in a manner that is more to the user's liking.

Unfortunately, such user-customization typically must be performedmanually by the user and typically must be repeated for multiplesoftware programs. For example, the user must add his or her name toeach of multiple programs, add his or her street address to each ofmultiple programs, add his or her email address to each of multipleprograms, etc. This manual information entry, especially when repeatednumerous times, becomes burdensome on the user and thus reduces theuser-friendliness of the computer.

Furthermore, requiring manual entry of such user information reduces the“out of box” experience for the user. The “out of box” experience refersto the user's experience the first time he or she uses his or her newcomputer (i.e., when he or she takes the new computer out of its box,plugs it in, and turns it on). One solution to improve the “out of box”experience would be to have the user information immediately availableto the user for this first use of the computer, such as by having amanufacturer add the user information for the user. Unfortunately, suchmanufacturer-entry of the user information is an expensive process andcan be cost-prohibitive. Thus, it would be beneficial to improve the“out of box” experience for the user in a different manner.

The automatic program customization based on a user information storedescribed below addresses these and other disadvantages.

SUMMARY OF THE INVENTION

Automatic program customization based on a user information store isdescribed herein. Programs, such as an operating system or otherapplication programs, are automatically customized to a specific user(s)based on data corresponding to the specific user(s) that is maintainedin a user information store.

According to one aspect, the information store is a unified store thatis accessible by multiple application programs as well as the operatingsystem. Thus, new information or information changes can be madeavailable to multiple applications by the user adding (or changing) theinformation only once.

According to another aspect, the operating system image to be installedon a computer is pre-populated with user-specific information at thefactory. The user-specific information can be integrated into theoperating system at the factory or alternatively upon an initial boot ofthe computer by the user. By pre-populating the operating system imageto be installed on the computer with the user-specific information, thecomputer is customized to the user the first time he or she uses thecomputer.

According to another aspect, the user information store is used todetermine what functionality the operating system is to include. By wayof example, certain functionality may only be installed on the computerif the user has a particular profession, hobby, or interest identifiedin the user information store. By way of another example, a specialtutorial may be included and automatically run when the computer isturned on if the user is a novice computer user.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example and notlimitation in the figures of the accompanying drawings. The same numbersare used throughout the figures to reference like components and/orfeatures.

FIG. 1 is a block diagram illustrating an exemplary computer system inaccordance with certain embodiments of the invention.

FIG. 2 is a block diagram illustrating another exemplary computer systemin accordance with certain embodiments of the invention.

FIG. 3 illustrates an exemplary bill of materials in accordance withcertain embodiments of the invention.

FIG. 4 illustrates an exemplary customized computer manufacturingprocess in accordance with certain embodiments of the invention.

FIG. 5 illustrates an exemplary process for manufacturing a computerwith a customized software program based on user-specific information inaccordance with certain embodiments of the invention.

FIG. 6 illustrates an exemplary process for customizing a program basedon user-specific information in accordance with certain embodiments ofthe invention.

FIG. 7 shows a general example of a computer that can be used inaccordance with certain embodiments of the invention.

DETAILED DESCRIPTION

In the discussion below, embodiments of the invention will be describedin the general context of computer-executable instructions, such asprogram modules, being executed by one or more conventional personalcomputers. Generally, program modules include routines, programs,objects, components, data structures, etc. that perform particular tasksor implement particular abstract data types. Moreover, those skilled inthe art will appreciate that various embodiments of the invention may bepracticed with other computer system configurations, including hand-helddevices, gaming consoles, multiprocessor systems, microprocessor-basedor programmable consumer electronics, network PCs, minicomputers,mainframe computers, and the like. In a distributed computerenvironment, program modules may be located in both local and remotememory storage devices.

Alternatively, embodiments of the invention can be implemented inhardware or a combination of hardware, software, and/or firmware. Forexample, at least part of the invention could be implemented in one ormore application specific integrated circuits (ASICs), one or moreprogrammable logic devices (PLDs), etc.

FIG. 1 is a block diagram illustrating an exemplary computer system inaccordance with certain embodiments of the invention. A computer system100 is illustrated including an operating system 102, one or moreapplication programs 104, a setup application program 106, a bill ofmaterials (BOM) 108, and a BOM interface 110.

Operating system 102 is the fundamental software control program forcomputer 100, performing various functions including providing a userinterface, managing the execution of one or more applications 104-106,and controlling the input of data from and output of data to variousinput/output (I/O) devices. Operating system 102 can be any of a widevariety of conventional operating systems, such as any of the “WINDOWS”operating systems available from Microsoft Corporation of Redmond, Wash.

Application programs 104 represent one or more of a wide variety ofsoftware application programs that can be executed on computer 100.Examples of such application programs include educational programs,reference programs, productivity programs (e.g., word processors,spreadsheets, databases), recreational programs, utility programs (e.g.,communications programs), etc. Application programs 104 may be installedon computer 100 by the user, or alternatively pre-installed by themanufacturer or distributor of computer 100.

BOM 108 is a compilation of customization information for one or moreusers (or prospective users) of computer 100. In one implementation, anydata describing the identity of a user or hardware preferences of a userthat the operating system or an application program allows to becustomized can be included in the user information of BOM 108. BOM 108is used to customize software programs (including operating system 102and/or application programs 104) to the particular user(s) of computer100. As multiple different programs can obtain information from BOM 108,BOM 108 is referred to as a “unified” information store. BOM 108 isstored in a known location on computer 100 or a remote locationaccessible by computer 100, such as with a known name in a particulardirectory (e.g., the root directory) of a primary hard disk of computer100, a known name at a particular remote server, etc.

Operating system 102 can optionally be a “componentized” operatingsystem. In a componentized operating system, the operating systemfunctionality is separated into multiple different components, eachcomponent including one or more files. Each component has acorresponding manifest that identifies which other components, if any,that particular component is dependent on. Additionally, an operatingsystem bill of materials (OS BOM) is also included that identifies whichcomponents are installed on (or to be installed on) a computer as theoperating system. This identification can be direct (e.g., the componentnames or identifiers are listed) or indirect (e.g., one or morecomponents are identified because of their inclusion in a manifestcorresponding to another identified component). In a componentizedoperating system, BOM 108 can be included as one of the componentsinstalled on a computer (e.g., referred to as an identity component).Alternatively, BOM 108 can identify which components are installed on(or are to be installed on) the computer.

Regardless of whether operating system 102 is a componentized operatingsystem, BOM interface 110 provides an interface between BOM 108 andsetup application 106 as well as operating system 102 (and optionallyone or more of application programs 104). BOM interface 110 allowsoperating system 102 and/or application programs 104 to retrieve datafrom BOM 108, modify data in BOM 108, and/or add data to BOM 108. In oneimplementation, BOM interface 110 is implemented as an ApplicationProgramming Interface (API). Alternatively, operating system 102,application programs 104, or setup application 106 may access BOM 108directly rather than via interface 110.

Setup application program 106 is an application program that integratesthe information from BOM 108 into operating system 102. Setupapplication 106 executes during installation of operating system 102, oralternatively at other times, such as the first time computer 100 isturned on (i.e., booted) by the user. Setup application 106 retrievesvarious information for one or more users of computer 100 from BOM 108and customizes operating system 102 based on the retrieved information.Although illustrated as a separate application, setup application 106may alternatively be part of operating system 102 or another applicationprogram. In some implementations, setup application program 106continues to operate as an integration manager after installation ofoperating system 102, managing subsequent updating of operating system102.

Setup application 106 can integrate information from BOM 108 intooperating system 102 in a variety of different manners. Information fromBOM 108 can be used to directly alter a setting in operating system 102.For example, the user's name stored in BOM 108 may be input to operatingsystem 102 so that operating system 102 can address the user by name. Byway of another example, the user's preferred desktop theme stored in BOM108 may be input to operating system 102 to change the current desktoptheme setting of operating system 102.

Information from BOM 108 can also be used to determine whatfunctionality is included in operating system 102. By way of example,certain functionality of the operating system may be specificallyinstalled (or not installed) based on the user-specific information,such as installing particular files or components providing enhancedgraphics features if the user-information indicates the user is agraphic artist or an educator, etc. By way of another example, if BOM108 indicates that a user is not very familiar with computers, thenparticular files or components that target beginning or novice users canbe added to the operating system and the operating system modified toexecute such applications when booted.

BOM 108 can optionally include user information for multiple users. Manycurrent operating systems support multiple users, allowing differentuser names (or “logon” names) to be created for each of the users. Eachuser is then able to have his or her own settings, such as desktoptheme, name and address, etc. When handling multiple users, setupapplication 106 requests operating system 102 to create multiple usernames, one for each user identified in BOM 108. Setup application 106then provides the user information corresponding to each user tooperating system 102 in order to customize the operating system 102settings for that particular user using the information in BOM 108.

In the illustrated example, BOM 108 is added to computer 100 by themanufacturer or distributor of computer 100. Alternatively, situationscan arise where the manufacturer or distributor does not add BOM 108 tocomputer 100 (e.g., computer 100 is purchased from a local retailer whohas little or no knowledge of who the purchaser is). In such situationsBOM 108 is added to computer 100, after the consumer acquires thecomputer, in any of a wide variety of manners. For example, upon initialboot setup application 106 may copy (e.g., via a network interface cardor modem) BOM 108 from a remote location to computer 100.

FIG. 2 is a block diagram illustrating another exemplary computer systemin accordance with certain embodiments of the invention. The system ofFIG. 2 includes two computers 120 and 122 coupled via a communicationlink 124. Communication link 124 represents any of a wide variety ofcommunications channels, including digital and analog channels as wellas wired or wireless channels. By way of example, communication link 124may be a local area network (LAN), wide area network (WAN), a publicnetwork (e.g., the Internet), a combination of two or more of these,etc.

Computer 120 is similar to computer 100 of FIG. 1, and includesoperating system 102, one or more application programs 104, setupapplication program 106, and BOM interface 110. Client computer 120,however, does not include a BOM. Rather, BOM 108 is included on computer122. Thus, BOM 108 is accessed via communications link 124.

Depending on the nature of communications link 124 and the informationin BOM 108, default information may be used by setup application 106 andthen changed when BOM 108 is retrieved from computer 122. For example,communications link 124 may be the Internet and BOM 108 may include theuser-specific information for computer 120 to access the Internet. Inthis situation, setup application 106 includes default Internetconnection information (e.g., a toll-free access number for an InternetService Provider managed by the manufacturer of computer 120) to be ableto make a connection to computer 122 and retrieve BOM 108. Upon receiptof BOM 108, the default information used by setup application 106 isoverwritten as necessary as part of the integration process.

Computer 122 can be a server computer that is accessible to multipledifferent users via communication link 124, and may optionally maintainmultiple different BOMs 108 for different users. Alternatively, computer122 may maintain a BOM 108 that is accessible by only a single user viacommunication link 124. BOM 108 can be accessible to a user regardlessof what computer the user is using. By way of example, computer 122 mayinclude an operating system and BOM interface (analogous to computer100) and operate as a desktop computer. Computer 120, on the other hand,may be a portable computer that accesses the single BOM 108 maintainedby the desktop computer. Thus, only a single BOM 108 is maintained forthe user, and is shared by multiple applications executing on the user'sdesktop computer and portable computer.

FIG. 3 illustrates an exemplary bill of materials in accordance withcertain embodiments of the invention. Bill of materials 140 of FIG. 3can be, for example, BOM 108 of FIG. 1 or 2.

BOM 140 includes customization information for one or possibly multiple(x) users 142 and 144. BOM 140 includes user information 142 for oneuser and user information 144 for another user. User information 142includes user identity information 146 and hardware information 148,while user information 144 includes user identity information 150 andhardware information 152. User identity information 146 and 150 eachinclude data describing the identity of the corresponding users. Any ofa wide variety of information describing a user can be maintained asuser identity information 146 and 150, such as name, initials, homeaddress, business address, state of residence, country of citizenship,electronic mail (email) address, age, social security number, date ofbirth, organization name, profession, hobbies, interests, computerexpertise, telephone number, etc.

Hardware information 148 and 152 include data describing hardwarepreferences of the corresponding users. Any of a wide variety ofinformation describing hardware preferences can be maintained ashardware information 148 and 152, such as color preferences, speakervolume preferences, desktop background preferences, desktop themepreferences, display preferences (e.g., resolution and number ofcolors), language preferences, Internet service provider (ISP)identifier and access information (e.g., telephone number and logonidentification), whether telephone features (e.g., call-waiting) shouldbe disabled, preferred default printer, time zone setting, whetherparticular end user license agreements (EULAs) have been accepted by theuser, computer name, what specific hardware to install on the computerat boot time, etc.

BOM 140 is available to any program and thus operates as a unifiedinformation store. Any changes made by one program to BOM 140 areavailable to all other programs, thereby alleviating the user of havingto enter the same changes into multiple programs.

Additionally, the user information 142 and 144 can optionally includeprogram-specific information. Information specific to a particularprogram can be written to BOM 140 by that particular program, oralternatively by another program (e.g., operating system 102). A programcan store any user-customizable settings in BOM 140, allowing thesettings to be automatically customized for another computer accessingBOM 140.

It should be noted that not every BOM (nor the user information fordifferent users within the same BOM) need include the same information.The information included in a BOM for a particular user can vary basedon the operating system and/or application programs being used by theuser, the amount of information that the user is willing to divulge andhave stored in the BOM, etc.

FIG. 4 illustrates an exemplary customized computer manufacturingprocess in accordance with certain embodiments of the invention.Initially, an order 170 for a computer is received from a consumer,which may or may not be a prospective user of the computer. For example,a child may order a computer for his/her parent without any intention ofusing the computer himself/herself.

The computer order 170 is routed to a hardware assembly station 172 atwhich point multiple hardware components 174 are assembled to build thecomputer 176. The assembly of hardware components may be automated,performed manually, or a combination thereof. The assembled computer isthen submitted to a software installation station 178. At softwareinstallation station 178, the operating system 180 and variousapplication programs 182 are copied to computer 176. This copying ofsoftware programs (application programs 182 and operating system 180)may be done individually or alternatively as a combined process (e.g.,pre-generated software images including operating system 180 and variouscombinations of application programs 182 may be used to copy multipleprograms to computer 176 concurrently).

User-specific information 184 is also added to computer 176 as a BOM,resulting in an operating system image on the computer that ispre-populated with the user-specific information. This user-specificinformation 184 can be integrated into operating system 180 (or otherapplications) at software installation station 178, or alternativelysuch integration may occur at the first boot of the computer by theuser. The customized computer 186, with user-specific information 184installed on it, is then provided to the user.

The order of manufacturing illustrated in FIG. 4 is exemplary only, andvarious alternative orders can be implemented. By way of example,operating system 180 and user-specific information 184 may be installedon or copied to a hard disk drive prior to adding the drive to thecomputer at hardware assembly station 172.

FIG. 5 illustrates an exemplary process for manufacturing a computerwith a customized software program based on user-specific information inaccordance with certain embodiments of the invention. The process ofFIG. 5 is implemented at stations 172 and 178 of FIG. 4, and may beperformed in software, hardware, firmware, or a combination thereof.FIG. 5 is described with additional reference to components in FIG. 1.

Initially, a consumer request for a computer is received, act 200. Thisconsumer request can be submitted by the user and received in any of awide variety of manners, such as via the Internet, facsimile, letter,email, telephone call, etc.

Once received, user-specific information for one or more anticipated orprospective users of the computer is obtained, act 202. Theuser-specific information can be obtained in any of a wide variety ofmanners. In one implementation, the consumer is queried for theuser-specific information at the time the request is submitted by theuser. For example, if the consumer orders the computer over World WideWeb on the Internet, then Web pages with additional questions may bepresented to the consumer and the answers to these questions used as theuser-specific information. By way of another example, if the consumerorders the computer by email, then a reply email message with additionalquestions may be sent to the consumer. When the consumer responds to thereply email message, the answers in the response are used as theuser-specific information.

Alternatively, the information may be obtained from the computer fromwhich the request is submitted. For example, if a consumer orders a newcomputer over the Internet using his or her current computer, the BOM onhis or her current computer can be copied (or retrieved via a BOMinterface) and used as the user-specific information for the newcomputer.

The requested computer is then assembled (if necessary), act 204. Insome situations the computer hardware may be pre-assembled, therebyalleviating the need to assemble the computer in act 204. The operatingsystem is also installed on the computer (if necessary), act 206. Insome situations the operating system may be pre-installed (e.g., copiedto a hard disk drive), thereby alleviating the need to install theoperating system on the computer in act 206.

The operating system is then customized with the user-specificinformation, act 208. The user-specific information is integrated intothe operating system, such as by setup application 106 as discussedabove. Alternatively, rather than having the user-specific informationintegrated at the time of installation, the user-specific informationcould be integrated at first boot.

Alternatively, the installation and customization acts 206 and 208 canoccur concurrently, with the user-specific information being used toaffect the installation of the operating system. By way of example,certain functionality of the operating system may be specificallyinstalled (or not installed) based on the user-specific information,such as installing particular files or components if theuser-information indicates the user is an author, a graphic artist, aneducator, etc.

Once the operating system is installed, a check is made as to whether anadditional application program is to be customized, act 210. If anadditional application program is to be customized, then the applicationprogram is installed (if necessary), act 212, and customized with theuser-specific information, act 214. The process then returns to checkwhether an additional application program is to be customized, act 210.When there are no more application programs to be customized, thecustomized computer is made available to the consumer, act 216.Alternatively, some application programs may access the BOM andcustomize themselves based on the information in the BOM.

FIG. 6 illustrates an exemplary process for customizing a program basedon user-specific information in accordance with certain embodiments ofthe invention. The process of FIG. 6 is implemented by a computer, suchas computer 100 of FIG. 1 or computer 120 of FIG. 2, and may beperformed in software, hardware, firmware, or a combination thereof.FIG. 6 is described with additional reference to components in FIGS. 1and 2.

Initially, a request to install a program is received, act 222. Theprogram can be any of a wide variety of conventional applicationprograms, or alternatively or an operating system. The request may be anexplicit request (e.g., the user double-clicking on a “setup” or“install” icon, or typing in a setup or install command, etc.) orimplicit (e.g., putting a CD ROM with an uninstalled program into the CDROM drive of the computer, turning on the computer the first time, etc).

Once the request is received the BOM is accessed, act 224. As discussedabove, the BOM can be stored and accessed locally or remotely.User-specific information is extracted from the BOM, act 226, and theprogram is installed on the device, act 228. Once installed, the programis customized per the user-specific information, act 230. Alternatively,the installation and customization acts 228 and 230 may occurconcurrently, with the user-specific information being used to affectthe installation of the application (e.g., what functionality or filesare to be included).

FIG. 7 shows a general example of a computer 242 that can be used inaccordance with certain embodiments of the invention. Computer 242 isshown as an example of a computer that can perform the functions of acomputer 100 of FIG. 1, a computer 120 of FIG. 2, or a computer 122 ofFIG. 2. Computer 242 includes one or more processors or processing units244, a system memory 246, and a bus 248 that couples various systemcomponents including the system memory 246 to processors 244.

The bus 248 represents one or more of any of several types of busstructures, including a memory bus or memory controller, a peripheralbus, an accelerated graphics port, and a processor or local bus usingany of a variety of bus architectures. The system memory includes readonly memory (ROM) 250 and random access memory (RAM) 252. A basicinput/output system (BIOS) 254, containing the basic routines that helpto transfer information between elements within computer 242, such asduring start-up, is stored in ROM 250. Computer 242 further includes ahard disk drive 256 for reading from and writing to a hard disk, notshown, connected to bus 248 via a hard disk driver interface 257 (e.g.,a SCSI, ATA, or other type of interface); a magnetic disk drive 258 forreading from and writing to a removable magnetic disk 260, connected tobus 248 via a magnetic disk drive interface 261; and an optical diskdrive 262 for reading from or writing to a removable optical disk 264such as a CD ROM, DVD, or other optical media, connected to bus 248 viaan optical drive interface 265. The drives and their associatedcomputer-readable media provide nonvolatile storage of computer readableinstructions, data structures, program modules and other data forcomputer 242. Although the exemplary environment described hereinemploys a hard disk, a removable magnetic disk 260 and a removableoptical disk 264, it should be appreciated by those skilled in the artthat other types of computer readable media which can store data that isaccessible by a computer, such as magnetic cassettes, flash memorycards, digital video disks, random access memories (RAMs) read onlymemories (ROM), and the like, may also be used in the exemplaryoperating environment.

A number of program modules may be stored on the hard disk, magneticdisk 260, optical disk 264, ROM 250, or RAM 252, including an operatingsystem 270, one or more application programs 272, other program modules274, and program data 276. Operating system 270 can be any of a varietyof operating systems, such as any of the “Windows” family of operatingsystems available from Microsoft Corporation of Redmond, Wash. A usermay enter commands and information into computer 242 through inputdevices such as keyboard 278 and pointing device 280. Other inputdevices (not shown) may include a microphone, joystick, game pad,satellite dish, scanner, or the like. These and other input devices areconnected to the processing unit 244 through an interface 268 (e.g., aserial port interface) that is coupled to the system bus. A monitor 284or other type of display device is also connected to the system bus 248via an interface, such as a video adapter 286. In addition to themonitor, personal computers typically include other peripheral outputdevices (not shown) such as speakers and printers.

Computer 242 can operate in a networked environment using logicalconnections to one or more remote computers, such as a remote computer288. The remote computer 288 may be another personal computer, a server,a router, a network PC, a peer device or other common network node, andtypically includes many or all of the elements described above relativeto computer 242, although only a memory storage device 290 has beenillustrated in FIG. 2. The logical connections depicted in FIG. 2include a local area network (LAN) 292 and a wide area network (WAN)294. Such networking environments are commonplace in offices,enterprise-wide computer networks, intranets, and the Internet. In thedescribed embodiment of the invention, remote computer 288 executes anInternet Web browser program such as the “Internet Explorer” Web browsermanufactured and distributed by Microsoft Corporation of Redmond, Wash.

When used in a LAN networking environment, computer 242 is connected tothe local network 292 through a network interface or adapter 296. Whenused in a WAN networking environment, computer 242 typically includes amodem 298 or other means for establishing communications over the widearea network 294, such as the Internet. The modem 298, which may beinternal or external, is connected to the system bus 248 via a serialport interface 268. In a networked environment, program modules depictedrelative to the personal computer 242, or portions thereof, may bestored in the remote memory storage device. It will be appreciated thatthe network connections shown are exemplary and other means ofestablishing a communications link between the computers may be used.

Generally, the data processors of computer 242 are programmed by meansof instructions stored at different times in the variouscomputer-readable storage media of the computer. Programs and operatingsystems are typically distributed, for example, on floppy disks orCD-ROMs. From there, they are installed or loaded into the secondarymemory of a computer. At execution, they are loaded at least partiallyinto the computer's primary electronic memory. The invention describedherein includes these and other various types of computer-readablestorage media when such media contain instructions or programs forimplementing the steps described herein in conjunction with amicroprocessor or other data processor. The invention also includes thecomputer itself when programmed according to the methods and techniquesdescribed herein. Furthermore, certain sub-components of the computermay be programmed to perform the functions and acts described herein.The invention includes such sub-components when they are programmed asdescribed. In addition, the invention described herein includes datastructures as embodied on various types of memory media.

For purposes of illustration, programs and other executable programcomponents such as the operating system are illustrated herein asdiscrete blocks, although it is recognized that such programs andcomponents reside at various times in different storage components ofthe computer, and are executed by the data processor(s) of the computer.

The above description references installation of software programs,including application programs and operating systems. It is to beappreciated, however, that the invention similarly applies toinstallation of other types of programs, such as firmware programs.

CONCLUSION

Thus, automatic program customization based on a user information storehas been described. The same information store can be used by multipledifferent programs, including an operating system, advantageouslycreating a unified storage location for user-specific information.Additionally, the user-specific information can be advantageously usedto automatically customize programs, including an operating system,thereby alleviating a user or manufacturer of the burden of manuallyentering such data and at the same time creating a personalized,customized, “out of box” experience for the purchaser of a new computer.

Although the description above uses language that is specific tostructural features and/or methodological acts, it is to be understoodthat the invention defined in the appended claims is not limited to thespecific features or acts described. Rather, the specific features andacts are disclosed as exemplary forms of implementing the invention.

1. A method comprising steps of: accessing a bill of materials (BOM)comprising information describing a user and data describing a hardwarepreference of the user; and automatically customizing an applicationprogram while the application program is being installed on a computingdevice, the step of automatically customizing comprising: integratingthe information describing the user and the hardware preference of theuser from the BOM into the application program; and configuring theapplication program based at least on the information describing theuser and the hardware preference of the user.
 2. A method as recited inclaim 1, further comprising storing the BOM on the computing devicebefore the computing device is shipped to the user.
 3. A method asrecited in claim 2, wherein the step of storing is controlled by amanufacturer or a distributor of the computing device.
 4. A method asrecited in claim 1, wherein the step of accessing comprises accessingthe BOM on a local storage device of the computing device.
 5. A methodas recited in claim 1, wherein a bill of materials (BOM) interface isprovided to facilitate communication between the BOM and the applicationprogram.
 6. A method as recited in claim 5, wherein the step ofaccessing comprises accessing the BOM on a remote storage device via theBOM interface.
 7. A method as recited in claim 1, wherein the step ofautomatically customizing is performed during an initial boot of thecomputing device by the user.
 8. A method as recited in claim 1, whereinthe application program comprises an operating system.
 9. A method asrecited in claim 1, wherein the BOM comprises data having information ofmultiple users.
 10. A method as recited in claim 1, wherein the BOMcomprises data identifying components to be installed on the computingdevice.
 11. A method as recited in claim 1, wherein the step ofintegrating is conducted via a setup program.
 12. A method as recited inclaim 1, wherein the step of automatically customizing further comprisesdetermining, based at least on the information in the BOM, whichcomponents are to be installed on the computer.
 13. One or morecomputer-readable media having stored thereon a plurality ofinstructions to implement the method recited in claim
 1. 14. A computingdevice comprising: an operating system; and a bill of materials (BOM)communicatively coupled to the operating system, the BOM comprising dataaccessible to the operating system, wherein the operating system isinstalled and automatically customized on the computing device based atleast on the data.
 15. A computing device as recited in claim 14,further comprising a bill of materials (BOM) interface, the BOMinterface coupled to the BOM and the operating system, wherein the BOMinterface is configured to facilitate retrieval of the data from the BOMto the operating system.
 16. A computing device as recited in claim 14,wherein the data in the BOM comprises user identity information and auser hardware preference.
 17. A computing device as recited in claim 14,wherein the BOM comprises user information of multiple users.
 18. Acomputing device as recited in claim 14, wherein the data in the BOMcomprises data identifying components installed in the operating systemof the computing device.
 19. A computing device comprising: an operatingsystem; and a bill of materials (BOM) interface communicatively coupledto the operating system, the BOM interface being configured to access abill of materials (BOM), the BOM comprising data identifying identityinformation of a user and a hardware preference of the user, wherein theoperating system is being automatically customized on the computingdevice based at least on the data during an installation of theoperating system.
 20. A computing device as recited in claim 19, whereinthe BOM is stored in a remote storage device and is accessible to theoperating system via a network.